<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="Generator" content="iWeb 3.0.4"/>
<meta name="iWeb-Build" content="local-build-20161221"/>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
<meta name="viewport" content="width=770"/>
<title>wolfSSL - Docs | wolfSSL Manual - Chapter 2 (Building wolfSSL)</title>
<link rel="stylesheet" type="text/css" media="screen,print" href="Docs-wolfssl-manual-2-building-wolfssl_files/Docs-wolfssl-manual-2-building-wolfssl.css"/>
<!--[if lt IE 8]><link rel='stylesheet' type='text/css' media='screen,print' href='Docs-wolfssl-manual-2-building-wolfssl_files/Docs-wolfssl-manual-2-building-wolfsslIE.css'/><![endif]-->
<!--[if gte IE 8]><link rel='stylesheet' type='text/css' media='screen,print' href='Media/IE8.css'/><![endif]-->
<script type="text/javascript" src="Scripts/iWebSite.js"></script>
<script type="text/javascript" src="Docs-wolfssl-manual-2-building-wolfssl_files/Docs-wolfssl-manual-2-building-wolfssl.js"></script>
<meta name="description" content="How to build the wolfSSL embedded SSL library on Unix, Windows, and in non-standard environments."/><meta name="keywords" content="embedded ssl, ssl library, embedded web server, cyassl, ssl, open source ssl, linux ssl, unix ssl, windows ssl, ssl visual studio, openssl replacement, openssl alternative, tls 1.2, dtls, ntru, aes-ni ssl, small openssl, smart grid, connected home, ecc, lightweight ssl, suite b, encryption security software, ssl inspection"/><meta name="robots" content="follow,index"/> <!--ipt>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create','UA-64826966-1','auto');ga('send','pageview');</scri-->
 
<script>//<![CDATA[
window.zEmbed||function(e,t){var n,o,d,i,s,a=[],r=document.createElement("iframe");window.zEmbed=function(){a.push(arguments)},window.zE=window.zE||window.zEmbed,r.src="javascript:false",r.title="",r.role="presentation",(r.frameElement||r).style.cssText="display: none",d=document.getElementsByTagName("script"),d=d[d.length-1],d.parentNode.insertBefore(r,d),i=r.contentWindow,s=i.document;try{o=s}catch(c){n=document.domain,r.src='javascript:var d=document.open();d.domain="'+n+'";void(0);',o=s}o.open()._l=function(){var o=this.createElement("script");n&&(this.domain=n),o.id="js-iframe-async",o.src=e,this.t=+new Date,this.zendeskHost=t,this.zEQueue=a,this.body.appendChild(o)},o.write('<body onload="document._l();">'),o.close()}("../../https@assets.zendesk.com/embeddable_framework/main.js","wolfssl.zendesk.com");
//]]></script>
  </head>
<body style="background: rgb(255, 255, 255); margin: 0pt; " onload="onPageLoad();">
<div style="text-align: center; ">
<div style="margin-bottom: 20px; margin-left: auto; margin-right: auto; margin-top: 20px; overflow: hidden; position: relative; word-wrap: break-word;  background: rgb(255, 255, 255); text-align: left; width: 770px; " id="body_content">
<div style="float: left; margin-left: 0px; position: relative; width: 770px; z-index: 0; " id="nav_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div style="clear: both; height: 0px; line-height: 0px; " class="spacer"> </div>
</div>
<div style="float: left; height: 0px; line-height: 0px; margin-left: 0px; position: relative; width: 770px; z-index: 10; " id="header_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
</div>
<div style="margin-left: 0px; position: relative; width: 770px; z-index: 5; " id="body_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div id="id1" style="height: 38px; left: 375px; position: absolute; top: 157px; width: 361px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_361_38" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style">wolfSSL Manual</p>
</div>
</div>
</div>
<div id="id2" style="height: 13154px; left: 35px; position: absolute; top: 281px; width: 701px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_701_13154" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-top: 0pt; " class="paragraph_style_1">Chapter 2: Building wolfSSL<span class="style"><br/></span></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">wolfSSL (formerly CyaSSL) was written with portability in mind and should generally be easy to build on most systems. If you have difficulty building wolfSSL, please don’t hesitate to seek support through our <a title="https://www.wolfssl.com/forums" href="../forums">support forums</a> or contact us directly at <a title="mailto:support@wolfssl.com" href="../cdn-cgi/l/email-protection#25565055554a575165524a49435656490b464a48"><span class="__cf_email__" data-cfemail="94e7e1e4e4fbe6e0d4e3fbf8f2e7e7f8baf7fbf9">[email&#160;protected]</span><script data-cfhash='f9e31' type="text/javascript">/* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */</script></a>.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">This chapter explains how to build wolfSSL on Unix and Windows, and provides guidance for building wolfSSL in a non-standard environment.  You will find the “getting started” guide in <a title="Docs-wolfssl-manual-3-getting-started.html" href="Docs-wolfssl-manual-3-getting-started.html">Chapter 3</a> and an SSL tutorial in <a title="Docs-wolfssl-manual-11-ssl-tutorial.html" href="Docs-wolfssl-manual-11-ssl-tutorial.html">Chapter 11</a>.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">When using the autoconf / automake system to build wolfSSL, wolfSSL uses a single Makefile to build all parts and examples of the library, which is both simpler and faster than using Makefiles recursively.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_3">2.1 Getting wolfSSL Source Code<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">The most recent version of wolfSSL can be downloaded from the wolfSSL website as a ZIP file:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><a title="http://wolfssl.com/yaSSL/download/downloadForm.php" href="../../wolfssl.com/yaSSL/download/downloadForm.php">http://wolfssl.com/yaSSL/download/downloadForm.php</a><br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">After downloading the ZIP file, unzip the file using the “unzip” command.  To use native line endings, enable the “-a” modifier when using unzip.  From the unzip man page, the “-a” modifier functionality is described:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">“The -a option causes files identified by zip as text files (those with the `t' label in zipinfo listings, rather than `b') to be automatically extracted as such, converting line endings, end-of-file characters and the character set itself as necessary. (For example, Unix files use line feeds (LFs) for end-of-line (EOL) and have no end-of-file (EOF) marker; Apple Operating Systems use carriage returns (CRs) for EOLs; and most PC operating systems use CR+LF for EOLs and control-Z for EOF. In addition, IBM mainframes and the Michigan Terminal System use EBCDIC rather than the more common ASCII character set, and NT supports Unicode.)”<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">NOTE</span>:  Beginning with the release of wolfSSL 2.0.0rc3, the directory structure of wolfSSL was changed as well as the standard install location.  These changes were made to make it easier for open source projects to integrate wolfSSL.  For more information on header and structure changes, please see sections 9.1 and 9.3.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_3">2.2 Building on *nix<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">When building wolfSSL on Linux, *BSD, OS X, Solaris, or other *nix-like systems, use the autoconf system. To build wolfSSL you only need to run two commands:<br/></p>
<p class="paragraph_style_2"> <br/></p>
<p class="paragraph_style_4">./configure<br/></p>
<p class="paragraph_style_4">make<br/></p>
<p class="paragraph_style_2"> <br/></p>
<p class="paragraph_style_2">You can append any number of build options to ./configure.  For a list of available build options, please see Section 2.5 or run:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_4">./configure --help<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">from the command line to see a list of possible options to pass to the ./configure script.  To build wolfSSL, run:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_4">make<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">To install wolfSSL run:<br/></p>
<p class="paragraph_style_2"> <br/></p>
<p class="paragraph_style_4">make install<br/></p>
<p class="paragraph_style_2"> <br/></p>
<p class="paragraph_style_2">You may need superuser privileges to install, in which case precede the command with sudo:<br/></p>
<p class="paragraph_style_2"> <br/></p>
<p class="paragraph_style_4">sudo make install<br/></p>
<p class="paragraph_style_2"> <br/></p>
<p class="paragraph_style_2">To test the build, run the testsuite program from the root wolfSSL source directory:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_4">./testsuite/testsuite.test<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">Or use autoconf to run the testsuite as well as the standard wolfSSL API and crypto tests:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_5">make test<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">Further details about expected output of the testsuite program can be found in <a title="Docs-wolfssl-manual-3-getting-started.html" href="Docs-wolfssl-manual-3-getting-started.html">Section 3.2</a>.  If you want to build only the wolfSSL library and not the additional items (examples, testsuite, benchmark app, etc.), you can run the following command from the wolfSSL root directory:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_5">make src/libwolfssl.la<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_3">2.3 Building on Windows<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">In addition to the instructions below, you can find instructions and tips for building wolfSSL with Visual Studio <a title="Docs-wolfssl-visual-studio.html" href="Docs-wolfssl-visual-studio.html">here</a>.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">VS 2008</span>:  Solutions are included for Visual Studio 2008 in the root directory of the install.  For use with Visual Studio 2010 and later, the existing project files should be able to be converted during the import process.<br/></p>
<p class="paragraph_style_2"> <br/></p>
<p class="paragraph_style_6">Note:<br/></p>
<p class="paragraph_style_2">If importing to a newer version of VS you will be asked:  “Do you want to overwrite the project and its imported property sheets?”  You can avoid the following by selecting “No”.  Otherwise if you select “Yes”, you will see warnings about EDITANDCONTINUE being ignored due to SAFESEH specification. You will need to right click on the testsuite, sslSniffer, server, echoserver, echoclient, and client individually and modify their Properties-&gt;Configuration Properties-&gt;Linker-&gt;Advanced (scroll all the way to the bottom in Advanced window).  Locate “Image Has Safe Exception Handlers” and click the drop down arrow on the far right. Change this to No (/SAFESEH:NO) for each of the aforementioned. The other option is to disable EDITANDCONTINUE which, we have found to be useful for debugging purposes and is therefore not recommended.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">VS 2010</span>:  You will need to download Service Pack 1 to build wolfSSL solution once it has been updated. If VS reports a linker error, clean and rebuild the project; the linker error should be taken care of.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">VS 2013 (64 bit solution)</span>:  You will need to download Service Pack 4 to build wolfSSL solution once it has been updated. If VS reports a linker error, clean the project then Rebuild the project and the linker error should be taken care of.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">To test each build, choose “Build All” from the Visual Studio menu and then run the testsuite program.  To edit build options in the Visual Studio project, select your desired project (wolfssl, echoclient, echoserver, etc.) and browse to the “Properties” panel.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_6">Note:<br/></p>
<p class="paragraph_style_2">After the wolfSSL v3.8.0 release the build preprocessor macros were moved to a centralized file located at ‘IDE/WIN/user_settings.h’. This file can also be found in the project. To add features such as ECC or ChaCha20/Poly1305 add #defines here such as HAVE_ECC or HAVE_CHACHA / HAVE_POLY1305.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">Cygwin:</span>  If using Cygwin, or other toolsets for Windows that provides *nix-like commands and functionality, please follow the instructions in section 2.2, above, for “Building on *nix”.  If building wolfSSL for Windows on a Windows development machine, we recommend using the included Visual Studio project files to build wolfSSL.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_3">2.4 Building in a non-standard environment<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_7">While not officially supported, we try to help users wishing to build wolfSSL in a non-standard environment, particularly with embedded and cross-compilation systems. Below are some notes on getting started with this.<br/></p>
<p class="paragraph_style_7"><br/></p>
<ol>
<li style="line-height: 15px; padding-left: 30px; text-indent: -15px; " class="full-width" value="1">
<p style="text-indent: -15px; " class="paragraph_style_8"><span style="font-size: 12px; " class="Bullet">1.</span><span style="width: 5px; " class="inline-block"></span>The source and header files need to remain in the same directory structure as they are in the wolfSSL download package.<br/></p>
</li>
</ol>
<p class="paragraph_style_7"><br/></p>
<ol>
<li style="line-height: 15px; padding-left: 30px; text-indent: -15px; " class="full-width" value="2">
<p style="text-indent: -15px; " class="paragraph_style_8"><span style="font-size: 12px; " class="Bullet">2.</span><span style="width: 5px; " class="inline-block"></span>Some build systems will want to explicitly know where the wolfSSL header files are located, so you may need to specify that.  They are located in the &lt;wolfssl_root&gt;/wolfssl directory.  Typically, you can add the &lt;wolfssl_root&gt; directory to your include path to resolve header problems.<br/></p>
</li>
</ol>
<p class="paragraph_style_7"><br/></p>
<ol>
<li style="line-height: 15px; padding-left: 30px; text-indent: -15px; " class="full-width" value="3">
<p style="text-indent: -15px; " class="paragraph_style_8"><span style="font-size: 12px; " class="Bullet">3.</span><span style="width: 5px; " class="inline-block"></span>wolfSSL defaults to a little endian system unless the configure process detects big endian.  Since users building in a non-standard environment aren't using the configure process, BIG_ENDIAN_ORDER will need to be defined if using a big endian system.<br/></p>
</li>
</ol>
<p class="paragraph_style_7"><br/></p>
<ol>
<li style="line-height: 15px; padding-left: 30px; text-indent: -15px; " class="full-width" value="4">
<p style="text-indent: -15px; " class="paragraph_style_8"><span style="font-size: 12px; " class="Bullet">4.</span><span style="width: 5px; " class="inline-block"></span>wolfSSL benefits speed-wise from having a 64-bit type available. The configure process determines if long or long long is 64 bits and if so sets up a define. So if sizeof(long) is 8 bytes on your system, define <span class="style_1">SIZEOF_LONG 8</span>. If it isn't but sizeof(long long) is 8 bytes, then define <span class="style_1">SIZEOF_LONG_LONG 8</span>.<br/></p>
</li>
</ol>
<p class="paragraph_style_7"><br/></p>
<ol>
<li style="line-height: 15px; padding-left: 30px; text-indent: -15px; " class="full-width" value="5">
<p style="text-indent: -15px; " class="paragraph_style_8"><span style="font-size: 12px; " class="Bullet">5.</span><span style="width: 5px; " class="inline-block"></span>Try to build the library, and let us know if you run into any problems. If you need help, contact us at <a title="mailto:info@wolfssl.com" href="../cdn-cgi/l/email-protection#7910171f16390e16151f0a0a15571a1614"><span class="__cf_email__" data-cfemail="afc6c1c9c0efd8c0c3c9dcdcc381ccc0c2">[email&#160;protected]</span><script data-cfhash='f9e31' type="text/javascript">/* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */</script></a>.<br/></p>
</li>
</ol>
<p class="paragraph_style_7"><br/></p>
<ol>
<li style="line-height: 15px; padding-left: 30px; text-indent: -15px; " class="full-width" value="6">
<p style="text-indent: -15px; " class="paragraph_style_8"><span style="font-size: 12px; " class="Bullet">6.</span><span style="width: 5px; " class="inline-block"></span>Some defines that can modify the build are listed in the following sub-sections, below.  For more verbose descriptions of many options, please see section 2.5.1, “Build Option Notes”.<br/></p>
</li>
</ol>
<p class="paragraph_style_7"><br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_9">2.4.1 Removing Features<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_10">The following defines can be used to remove features from wolfSSL.  This can be helpful if you are trying to reduce the overall library footprint size.  In addition to defining a <span class="style_1">NO_&lt;feature-name&gt;</span> define, you can also remove the respective source file as well from the build (but not the header file).<br/></p>
<ol>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_WOLFSSL_CLIENT</span> removes calls specific to the client and is for a server-only builds.  You should only use this if you want to remove a few calls for the sake of size.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span> <br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_WOLFSSL_SERVER</span> likewise removes calls specific to the server side.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_DES3</span> removes the use of DES3 encryptions. DES3 is built-in by default because some older servers still use it and it's required by SSL 3.0.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_DH</span> and <span class="style_1">NO_AES</span> are the same as the two above, they are widely used.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_DSA</span> removes DSA since it's being phased out of popular use.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_ERROR_STRINGS</span> disables error strings. Error strings are located in src/internal.c for wolfSSL or wolfcrypt/src/asn.c for wolfCrypt.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_HMAC</span> removes HMAC from the build.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_MD4</span> removes MD4 from the build, MD4 is broken and shouldn't be used.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_MD5</span> removes MD5 from the build.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_SHA256</span> removes SHA-256 from the build.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_PSK</span> turns off the use of the pre-shared key extension. It is built-in by default.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_PWDBASED</span> disables password-based key derivation functions such as PBKDF1, PBKDF2, and PBKDF from PKCS #12.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_RC4</span> removes the use of the ARC4 steam cipher from the build. ARC4 is built-in by default because it is still popular and widely used.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span> <br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_RABBIT</span> and <span class="style_1">NO_HC128</span> remove stream cipher extensions from the build.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_SESSION_CACHE</span> can be defined when a session cache is not needed.  This should reduce memory use by nearly 3 kB.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_TLS</span> turns off TLS.  We don’t recommend turning off TLS.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">SMALL_SESSION_CACHE</span> can be defined to limit the size of the SSL session cache used by wolfSSL.  This will reduce the default session cache from 33 sessions to 6 sessions and save approximately 2.5 kB.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WC_NO_RSA_OAEP</span> removes code for OAEP padding.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
</ol>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_9">2.4.2 Enabling Features Disabled by Default<br/></p>
<p class="paragraph_style_2"><br/></p>
<ol>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_CERT_GEN</span> turns on wolfSSL’s certificate generation functionality.  See chapter 7 for more information.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_DER_LOAD</span> allows loading DER-formatted CA certs into the wolfSSL context (WOLFSSL_CTX) using the function wolfSSL_CTX_der_load_verify_locations().<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_DTLS</span> turns on the use of DTLS, or datagram TLS.  This isn't widely supported or used so it is off by default.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_KEY_GEN</span> turns on wolfSSL’s RSA key generation functionality.  See chapter 7 for more information.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_RIPEMD</span> enables RIPEMD-160 support.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_SHA384</span> enables SHA-384 support.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_SHA512</span> enables SHA-512 support.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">DEBUG_WOLFSSL</span> builds in the ability to debug. For more information regarding debugging wolfSSL, see Chapter 8.  It is off by default.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">HAVE_AESCCM</span> enables AES-CCM support.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">HAVE_AESGCM</span> enables AES-GCM support.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">HAVE_CAMELLIA</span> enables Camellia support.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">HAVE_CHACHA</span> enables ChaCha20 support.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">HAVE_POLY1305</span> enables Poly1305 support.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">HAVE_CRL</span> enables Certificate Revocation List (CRL) support.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">HAVE_ECC</span> enables Elliptical Curve Cryptography (ECC) support.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">HAVE_LIBZ</span> is an extension that can allow for compression of data over the connection.  It is off by default and normally shouldn't be used, see the note below under configure notes libz.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">HAVE_OCSP</span> enables Online Certificate Status Protocol (OCSP) support.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">OPENSSL_EXTRA</span> builds even more OpenSSL compatibility into the library, and enables the wolfSSL OpenSSL compatibility layer to ease porting wolfSSL into existing applications which had been designed to work with OpenSSL. It is off by default.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">TEST_IPV6</span> turns on testing of IPv6 in the test applications.  wolfSSL proper is IP neutral, but the testing applications use IPv4 by default.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">HAVE_CSHARP</span> turns on configuration options needed for C# wrapper.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">CURVED25519_SMALL</span> use of small memory options for both curve25519 and ed25519. Is a trade off between memory usage and speed.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">HAVE_CURVE25519</span> turns on the use of curve25519 algorithm.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">HAVE_ED25519</span> turns on use of the ed25519 algorithm.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_DH_CONST</span> turns off use of floating point values when performing Diffie Hellman operations and uses tables for POW and LOG. Removes dependency on external math library.<br/><br/><span class="style_1">WOLFSSL_TRUST_PEER_CERT</span> turns on the use of trusted peer certificates. This allows for loading in a peer certificate to match with a connection rather than using a CA. When turned on if a trusted peer certificate is matched than the peer cert chain is not loaded and the peer is considered verified. This feature is off by default and using CAs is preferred. <br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_STATIC_MEMORY</span> turns on the use of static memory buffers and functions. This allows for using static memory instead of dynamic. <br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_SESSION_EXPORT</span> turns on the use of DTLS session export and import. This allows for serializing and sending/recieving the current state of a DTLS session. <br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_ARMASM</span> turns on the use of ARMv8 hardware acceleration.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
</ol>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_9">2.4.3 Customizing or Porting wolfSSL <br/></p>
<p class="paragraph_style_2"><br/></p>
<ol>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_USER_SETTINGS</span> if defined allows a user specific settings file to be used. The file must be named “user_settings.h” and exist in the include path. This is included prior to the standard “settings.h” file, so default settings can be overridden.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_CALLBACKS</span> is an extension that allows debugging callbacks through the use of signals in an environment without a debugger, it is off by default. It can also be used to set up a timer with blocking sockets. Please see Chapter 6 for more information.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_USER_IO</span> allows the user to remove automatic setting of the default I/O functions EmbedSend() and EmbedReceive(). Used for custom I/O abstraction layer (see section 5.1 for more details).<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span> <br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_FILESYSTEM</span> is used if stdio isn't available to load certificates and key files. This enables the use of buffer extensions to be used instead of the file ones.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span> <br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_INLINE</span> disables the automatic inlining of small, heavily used functions. Turning this on will slow down wolfSSL and actually make it bigger since these are small functions, usually much smaller than function call setup/return.  You’ll also need to add wolfcrypt/src/misc.c to the list of compiled files if you’re not using autoconf.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_DEV_RANDOM</span> disables the use of the default /dev/random random number generator. If defined, the user needs to write an OS-specific GenerateSeed() function (found in “wolfcrypt/src/random.c”).<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span> <br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_MAIN_DRIVER</span> is used in the normal build environment to determine whether a test application is called on its own or through the testsuite driver application.  You'll only need to use it with the test files: test.c, client.c, server.c, echoclient.c, echoserver.c, and testsuite.c<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">NO_WRITEV</span> disables simulation of writev() semantics.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">SINGLE_THREADED</span> is a switch that turns off the use of mutexes. wolfSSL currently only uses one for the session cache.  If your use of wolfSSL is always single threaded you can turn this on.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">USER_TICKS</span> allows the user to define their own clock tick function if time(0) is not wanted. Custom function needs second accuracy, but doesn’t have to be correlated to EPOCH.  See LowResTimer() function in “wolfssl_int.c”.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span> <br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">USER_TIME</span> disables the use of time.h structures in the case that the user wants (or needs) to use their own. See “wolfcrypt/src/asn.c” for implementation details. The user will need to define and/or implement XTIME, XGMTIME, and XVALIDATE_DATE.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">USE_CERT_BUFFERS_1024</span> enables 1024-bit test certificate and key buffers located in &lt;wolfssl_root&gt;/wolfssl/certs_test.h.  Helpful when testing on and porting to embedded systems with no filesystem.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">USE_CERT_BUFFERS_2048</span> enables 2048-bit test certificate and key buffers located in &lt;wolfssl_root&gt;/wolfssl/certs_test.h.  Helpful when testing on and porting to embedded systems with no filesystem.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">CUSTOM_RAND_GENERATE_SEED</span> allows user to define custom function equivalent to wc_GenerateSeed(byte* output, word32 sz).<br/><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">CUSTOM_RAND_GENERATE_BLOCK</span> allows user to define custom random number generation function.<br/>Examples of use are as follows.<br/><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_12"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span>        ./configure --disable-hashdrbg <br/>        CFLAGS=&quot;-DCUSTOM_RAND_GENERATE_BLOCK= custom_rand_generate_block&quot;.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_12"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span>        OR<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_12"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span>        /* RNG */<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_12"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span>        //#define HAVE_HASHDRBG<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_12"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span>        extern int custom_rand_generate_block(unsigned char* output, unsigned int sz);<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
</ol>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_9">2.4.4 Reducing Memory Usage<br/></p>
<p class="paragraph_style_2"><br/></p>
<ol>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">TFM_TIMING_RESISTANT</span> can be defined when using fast math (USE_FAST_MATH) on systems with a small stack size.  This will get rid of the large static arrays.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_SMALL_STACK</span> can be used for devices which have a small stack size.  This increases the use of dynamic memory in wolfcrypt/src/integer.c, but can lead to slower performance.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">RSA_LOW_MEM</span> when defined CRT is not used which saves on some memory but slows down RSA operations. Is off by default<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
</ol>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_9">2.4.5 Increasing Performance<br/></p>
<p class="paragraph_style_2"><br/></p>
<ol>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_AESNI</span> enables use of AES accelerated operations which are built into some Intel chipsets.  When using this define, the aes_asm.s file must be added to the wolfSSL build sources.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">USE_FAST_MATH</span> switches the big integer library to a faster one that uses assembly if possible.  fastmath will speed up public key operations like RSA, DH, and DSA.  The big integer library is generally the most portable and generally easiest to get going with, but the negatives to the normal big integer library are that it is slower and it uses a lot of dynamic memory.  Because the stack memory usage can be larger when using fastmath, we recommend defining TFM_TIMING_RESISTANT as well when using this option.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
</ol>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_9">2.4.6 Stack or Chip Specific Defines<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">wolfSSL can be built for a variety of platforms and TCP/IP stacks.  The following defines are located in ./wolfssl/wolfcrypt/settings.h and are commented out by default.  Each can be uncommented to enable support for the specific chip or stack referenced below.<br/></p>
<p class="paragraph_style_2"><br/></p>
<ol>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">IPHONE</span> can be defined if building for use with iOS.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">THREADX</span> can be defined when building for use with the ThreadX RTOS (<a title="http://www.rtos.com" href="../../www.rtos.com/default.htm">www.rtos.com</a>).<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">MICRIUM</span> can be defined when building for Micrium’s µC/OS (<a title="http://www.micrium.com" href="../../www.micrium.com/default.htm">www.micrium.com</a>).<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">MBED</span> can be defined when building for the mbed prototyping platform (<a title="http://www.mbed.org" href="../../www.mbed.org/default.htm">www.mbed.org</a>).<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">MICROCHIP_PIC32</span> can be defined when building for Microchip’s PIC32 platform (<a title="http://www.microchip.com" href="../../www.microchip.com/default.htm">www.microchip.com</a>).<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">MICROCHIP_TCPIP_V5</span> can be defined specifically version 5 of microchip tcp/ip stack.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">MICROCHIP_TCPIP</span> can be defined for microchip tcp/ip stack version 6 or later.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_MICROCHIP_PIC32MZ</span> can be defined for PIC32MZ hardware cryptography engine. <br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">FREERTOS</span> can be defined when building for FreeRTOS (<a title="http://www.freertos.org" href="../../www.freertos.org/default.htm">www.freertos.org</a>). If using LwIP, define WOLFSSL_LWIP as well.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">FREERTOS_WINSIM</span> can be defined when building for the FreeRTOS windows simulator (<a title="http://www.freertos.org" href="../../www.freertos.org/default.htm">www.freertos.org</a>).<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">EBSNET</span> can be defined when using EBSnet products and RTIP.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_LWIP</span> can be defined when using wolfSSL with the LwIP TCP/IP stack (<a title="http://savannah.nongnu.org/projects/lwip/)." href="../../savannah.nongnu.org/projects/lwip/).">http://savannah.nongnu.org/projects/lwip/).</a><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_GAME_BUILD</span> can be defined when building wolfSSL for a game console.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_LSR</span> can be define if building for LSR.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">FREESCALE_MQX</span> can be defined when building for Freescale MQX/RTCS/MFS (<a title="http://www.freescale.com/" href="../../www.freescale.com/default.htm">www.freescale.com</a>).  This in turn defines FREESCALE_K70_RNGA to enable support for the Kinetis H/W Random Number Generator Accelerator<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_STM32F2</span> can be defined when building for STM32F2. This define also enables STM32F2 hardware crypto and hardware RNG support in wolfSSL. (<a title="http://www.st.com/internet/mcu/subclass/1520.jsp" href="../../www.st.com/internet/mcu/subclass/1520.jsp">http://www.st.com/internet/mcu/subclass/1520.jsp</a>)<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">COMVERGE</span> can be defined if using Comverge settings.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_QL</span> can be defined if using QL SEP settings.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_EROAD</span> can be defined building for EROAD.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_IAR_ARM</span> can be defined if build for IAR EWARM.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_TIRTOS</span> can be defined when building for TI-RTOS.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_ROWLEY_ARM</span> can be defined when building with Rowley CrossWorks.<br/><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_NRF51</span> can be defined when porting to Nordic nRF51.<br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><br/></p>
</li>
<li style="line-height: 15px; padding-left: 48px; text-indent: -48px; " class="full-width">
<p style="text-indent: -48px; " class="paragraph_style_11"><span style="font-size: 0px; position: relative; top: -7px; " class="Bullet"></span><span style="width: 48px; " class="inline-block"></span><span class="style_1">WOLFSSL_NRF51_AES</span> can be defined to use built-in AES hardware for AES 128 ECB encrypt when porting to Nordic nRF51.<br/></p>
</li>
</ol>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_3">2.5 Build Options (./configure Options)<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_2">The following are options which may be appended to the ./configure script to customize how the wolfSSL library is built.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">By default, wolfSSL only builds in shared mode, with static mode being disabled. This speeds up build times by a factor of two. Either mode can be explicitly disabled or enabled if desired.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_5">  --enable-debug          Add debug code/turns off optimizations (yes|no)<br/></p>
<p class="paragraph_style_5">                          [default=no]<br/></p>
<p class="paragraph_style_5">  --enable-distro         Enable wolfSSL distro build (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-singlethreaded Enable wolfSSL single threaded (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-dtls           Enable wolfSSL DTLS (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-rng            Enable compiling and using RNG (default: enabled)<br/></p>
<p class="paragraph_style_5"><br/></p>
<p class="paragraph_style_5">  --enable-sctp           Enable wolfSSL DTLS-SCTP support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-openssh        Enable OpenSSH compatibility build (default:<br/></p>
<p class="paragraph_style_5">                          disabled)<br/></p>
<p class="paragraph_style_5">  --enable-opensslextra   Enable extra OpenSSL API, size+ (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-maxstrength    Enable Max Strengh build, allows TLSv1.2-AEAD-PFS<br/></p>
<p class="paragraph_style_5">                          ciphers only (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-harden         Enable Hardened build, Enables Timing Resistance and<br/></p>
<p class="paragraph_style_5">                          Blinding (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-ipv6           Enable testing of IPV6 (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-fortress       Enable SSL fortress build (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-bump           Enable SSL Bump build (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-leanpsk        Enable Lean PSK build (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-leantls        Enable Lean TLS build (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-bigcache       Enable big session cache (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-hugecache      Enable huge session cache (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-smallcache     Enable small session cache (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-savesession    Enable persistent session cache (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-savecert       Enable persistent cert cache (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-atomicuser     Enable Atomic User Record Layer (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-pkcallbacks    Enable Public Key Callbacks (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-sniffer        Enable wolfSSL sniffer support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-aesgcm         Enable wolfSSL AES-GCM support (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-aesccm         Enable wolfSSL AES-CCM support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-armasm         Enable wolfSSL ARMv8 ASM support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-aesni          Enable wolfSSL AES-NI support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-intelasm       Enable All Intel ASM speedups (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-camellia       Enable wolfSSL Camellia support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-md2            Enable wolfSSL MD2 support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-nullcipher     Enable wolfSSL NULL cipher support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-ripemd         Enable wolfSSL RIPEMD-160 support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-blake2         Enable wolfSSL BLAKE2 support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-sha512         Enable wolfSSL SHA-512 support (default: enabled on<br/></p>
<p class="paragraph_style_5">                          x86_64)<br/></p>
<p class="paragraph_style_5">  --enable-sessioncerts   Enable session cert storing (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-keygen         Enable key generation (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-certgen        Enable cert generation (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-certreq        Enable cert request generation (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-certext        Enable cert request extensions (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-sep            Enable sep extensions (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-hkdf           Enable HKDF (HMAC-KDF) support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-x963kdf        Enable X9.63 KDF support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-dsa            Enable DSA (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-eccshamir      Enable ECC Shamir (default: enabled on x86_64)<br/></p>
<p class="paragraph_style_5">  --enable-ecc            Enable ECC (default: enabled on x86_64)<br/></p>
<p class="paragraph_style_5">  --enable-ecccustcurves  Enable ECC custom curves (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-compkey        Enable compressed keys support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-curve25519     Enable Curve25519 (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-ed25519        Enable ED25519 (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-fpecc          Enable Fixed Point cache ECC (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-eccencrypt     Enable ECC encrypt (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-psk            Enable PSK (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-errorstrings   Enable error strings table (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-oldtls         Enable old TLS versions &lt; 1.2 (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-sslv3          Enable SSL version 3.0 (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-stacksize      Enable stack size info on examples (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-memory         Enable memory callbacks (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-rsa            Enable RSA (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-dh             Enable DH (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-anon           Enable Anonymous (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-asn            Enable ASN (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-aes            Enable AES (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-coding         Enable Coding base 16/64 (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-base64encode   Enable Base64 encoding (default: enabled on x86_64)<br/></p>
<p class="paragraph_style_5">  --enable-des3           Enable DES3 (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-idea           Enable IDEA Cipher (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-arc4           Enable ARC4 (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-md5            Enable MD5 (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-sha            Enable SHA (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-cmac           Enable CMAC (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-webserver      Enable Web Server (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-hc128          Enable HC-128 (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-rabbit         Enable RABBIT (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-fips           Enable FIPS 140-2, Will NOT work w/o FIPS license<br/></p>
<p class="paragraph_style_5">                          (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-sha224         Enable wolfSSL SHA-224 support (default: enabled on<br/></p>
<p class="paragraph_style_5">                          x86_64)<br/></p>
<p class="paragraph_style_5">  --enable-poly1305       Enable wolfSSL POLY1305 support (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-chacha         Enable CHACHA (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-hashdrbg       Enable Hash DRBG support (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-filesystem     Enable Filesystem support (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-inline         Enable inline functions (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-ocsp           Enable OCSP (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-ocspstapling   Enable OCSP Stapling (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-ocspstapling2  Enable OCSP Stapling v2 (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-crl            Enable CRL (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-crl-monitor    Enable CRL Monitor (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-sni            Enable SNI (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-maxfragment    Enable Maximum Fragment Length (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-alpn            Enable ALPN (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-truncatedhmac  Enable Truncated HMAC (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-renegotiation-indication<br/></p>
<p class="paragraph_style_5">                          Enable Renegotiation Indication (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-secure-renegotiation<br/></p>
<p class="paragraph_style_5">                          Enable Secure Renegotiation (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-supportedcurves<br/></p>
<p class="paragraph_style_5">                          Enable Supported Elliptic Curves (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-session-ticket Enable Session Ticket (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-extended-master<br/></p>
<p class="paragraph_style_5">                          Enable Extended Master Secret (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-tlsx           Enable all TLS Extensions (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-pkcs7          Enable PKCS7 (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-scep           Enable wolfSCEP (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-srp            Enable Secure Remote Password (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-smallstack     Enable Small Stack Usage (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-valgrind       Enable valgrind for unit tests (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-testcert       Enable Test Cert (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-iopool         Enable I/O Pool example (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-certservice    Enable cert service (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-jni            Enable wolfSSL JNI (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-lighty         Enable lighttpd/lighty (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-stunnel        Enable stunnel (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-md4            Enable MD4 (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-pwdbased       Enable PWDBASED (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-scrypt         Enable SCRYPT (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-cryptonly      Enable wolfCrypt Only build (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-fastmath       Enable fast math ops (default: enabled on x86_64)<br/></p>
<p class="paragraph_style_5">  --enable-fasthugemath   Enable fast math + huge code (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-examples       Enable Examples  (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-crypttests     Enable Crypt Bench/Test  (default: enabled)<br/></p>
<p class="paragraph_style_5">  --enable-fast-rsa       Enable RSA using Intel IPP (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-staticmemory   Enable static memory use (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-mcapi          Enable Microchip API (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-asynccrypt    Enable Asynchronous Crypto (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-sessionexport  Enable export and import of sessions (default:<br/></p>
<p class="paragraph_style_5">                          disabled)<br/></p>
<p class="paragraph_style_5">  --enable-aeskeywrap     Enable AES key wrap support (default: disabled)<br/></p>
<p class="paragraph_style_5">  --enable-jobserver[=no/yes/#] default=yes<br/></p>
<p class="paragraph_style_5">                        Enable up to # make jobs<br/></p>
<p class="paragraph_style_5">                        yes: enable one more than CPU count<br/></p>
<p class="paragraph_style_5"><br/></p>
<p class="paragraph_style_5"><br/></p>
<p class="paragraph_style_5">Optional Packages:<br/></p>
<p class="paragraph_style_5">  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]<br/></p>
<p class="paragraph_style_5">  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)<br/></p>
<p class="paragraph_style_5">  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use<br/></p>
<p class="paragraph_style_5">                          both]<br/></p>
<p class="paragraph_style_5">  --with-aix-soname=aix|svr4|both<br/></p>
<p class="paragraph_style_5">                          shared library versioning (aka &quot;SONAME&quot;) variant to<br/></p>
<p class="paragraph_style_5">                          provide on AIX, [default=aix].<br/></p>
<p class="paragraph_style_5">  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]<br/></p>
<p class="paragraph_style_5">  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the<br/></p>
<p class="paragraph_style_5">                          compiler's sysroot if not specified).<br/></p>
<p class="paragraph_style_5">  --with-user-crypto=PATH Path to USER_CRYPTO install (default /usr/local)<br/></p>
<p class="paragraph_style_5">  --with-ntru=PATH        Path to NTRU install (default /usr/)<br/></p>
<p class="paragraph_style_5">  --with-wnr=PATH         Path to Whitewood netRandom install (default<br/></p>
<p class="paragraph_style_5">                          /usr/local)<br/></p>
<p class="paragraph_style_5">  --with-libz=PATH        PATH to libz install (default /usr/)<br/></p>
<p class="paragraph_style_5">  --with-cavium=PATH      PATH to cavium/software dir<br/></p>
<p class="paragraph_style_5">  --with-cavium-v=PATH    PATH to Cavium V/software dir<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_13">2.5.1 Build Option Notes<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">debug</span> - enabling debug support allows easier debugging by compiling with debug information and defining the constant <span class="style_1">DEBUG_WOLFSSL</span> which outputs messages to stderr. To turn debug on at runtime, call wolfSSL_Debugging_ON(). To turn debug logging off at runtime, call wolfSSL_Debugging_OFF().  For more information, see Chapter 8.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">singlethreaded</span> - enabling single threaded mode turns off multi thread protection of the session cache. Only enable single threaded mode if you know your application is single threaded or your application is multithreaded and only one thread at a time will be accessing the library.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">dtls</span> - enabling DTLS support allows users of the library to also use the DTLS protocol in addition to TLS and SSL. For more information, see Chapter 4.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">opensslextra</span> - enabling OpenSSL Extra includes a larger set of OpenSSL compatibility functions. The basic build will enable enough functions for most TLS/SSL needs, but if you're porting an application that uses 10s or 100s of OpenSSL calls, enabling this will allow better support. The wolfSSL OpenSSL compatibility layer is under active development, so if there is a function missing which you need, please contact us and we'll try to help.  For more information about the OpenSSL Compatibility Layer, please see Chapter 13.<br/></p>
<p class="paragraph_style_2"> <br/></p>
<p class="paragraph_style_2"><span class="style_1">ipv6</span> - enabling IPV6 changes the test applications to use IPv6 instead of IPv4. wolfSSL proper is IP neutral, either version can be used, but currently the test applications are IP dependent, IPv4 by default.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">leanpsk</span> - Very small build using PSK, and eliminating many features from the library. Approximate build size for wolfSSL on an embedded system with this enabled is 21kB.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">fastmath</span> - enabling fastmath will speed up public key operations like RSA, DH, and DSA.  By default, wolfSSL uses the normal big integer math library.  This is generally the most portable and generally easiest to get going with.  The negatives to the normal big integer library are that it is slower and it uses a lot of dynamic memory.  This option switches the big integer library to a faster one that uses assembly if possible.  Assembly inclusion is dependent on compiler and processor combinations. Some combinations will need additional configure flags and some may not be possible. Help with optimizing fastmath with new assembly routines is available on a consulting basis.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">On ia32, for example, all of the registers need to be available so high optimization and omitting the frame pointer needs to be taken care of. wolfSSL will add &quot;-O3 -fomit-frame-pointer&quot; to GCC for non debug builds. If you're using a different compiler you may need to add these manually to CFLAGS during configure.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">OS X will also need &quot;-mdynamic-no-pic&quot; added to CFLAGS. In addition, if you're building in shared mode for ia32 on OS X you'll need to pass options to LDFLAGS as well:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">LDFLAGS=&quot;-Wl,-read_only_relocs,warning&quot;<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">This gives warning for some symbols instead of errors.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">fastmath also changes the way dynamic and stack memory is used. The normal math library uses dynamic memory for big integers. Fastmath uses fixed size buffers that hold 4096 bit integers by default, allowing for 2048 bit by 2048 bit multiplications. If you need 4096 bit by 4096 bit multiplications then change FP_MAX_BITS in wolfssl/wolfcrypt/tfm.h. As FP_MAX_BITS is increased, this will also increase the runtime stack usage since the buffers used in the public key operations will now be larger. A couple of functions in the library use several temporary big integers, meaning the stack can get relatively large. This should only come into play on embedded systems or in threaded environments where the stack size is set to a low value. If stack corruption occurs with fastmath during public key operations in those environments, increase the stack size to accommodate the stack usage.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">If you are enabling fastmath without using the autoconf system, you’ll need to define <span class="style_1">USE_FAST_MATH</span> and add tfm.c to the wolfSSL build instead of integer.c.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">Since the stack memory can be large when using fastmath, we recommend defining <span class="style_1">TFM_TIMING_RESISTANT</span> when using the fastmath library.  This will get rid of large static arrays.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">fasthugemath</span> - enabling fasthugemath includes support for the fastmath library and greatly increases the code size by unrolling loops for popular key sizes during public key operations. Try using the benchmark utility before and after using fasthugemath to see if the slight speedup is worth the increased code size.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">bigcache</span> - enabling the big session cache will increase the session cache from 33 sessions to 20,027 sessions. The default session cache size of 33 is adequate for TLS clients and embedded servers. The big session cache is suitable for servers that aren't under heavy load, basically allowing 200 new sessions per minute or so.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">hugecache</span> - enabling the huge session cache will increase the session cache size to 65,791 sessions. This option is for servers that are under heavy load, over 13,000 new sessions per minute are possible or over 200 new sessions per second.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">smallcache</span> - enabling the small session cache will cause wolfSSL to only store 6 sessions. This may be useful for embedded clients or systems where the default of nearly 3kB is too much RAM. This define uses less than 500 bytes of RAM.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">savesession</span> - enabling this option will allow an application to persist (save) and restore the wolfSSL session cache to/from memory buffers.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">savecert</span> - enabling this option will allow an application to persist (save) and restore the wolfSSL certificate cache to/from memory buffers.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">atomicuser</span> - enabling this option will turn on User Atomic Record Layer Processing callbacks. This will allow the application to register its own MAC/encrypt and decrypt/verify callbacks.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">pkcallbacks</span> - enabling this option will turn on Public Key callbacks, allowing the application to register its own ECC sign/verify and RSA sign/verify and encrypt/decrypt callbacks.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">sniffer</span> - enabling sniffer (SSL inspection) support will allow the collection of SSL traffic packets as well as the ability to decrypt those packets with the correct key file.<br/></p>
<p class="paragraph_style_2">Currently the sniffer supports the following RSA ciphers<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">    CBC ciphers:<br/></p>
<p class="paragraph_style_2">            AES-CBC<br/></p>
<p class="paragraph_style_2">            Camellia-CBC<br/></p>
<p class="paragraph_style_2">            3DES-CBC<br/></p>
<p class="paragraph_style_2">    Stream ciphers:<br/></p>
<p class="paragraph_style_2">            RC4<br/></p>
<p class="paragraph_style_2">            Rabbit<br/></p>
<p class="paragraph_style_2">            HC-128<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">aesgcm</span> - enabling AES-GCM will add these cipher suites to wolfSSL.  wolfSSL offers four different implementations of AES-GCM balancing speed versus memory consumption. If available, wolfSSL will use 64-bit or 32-bit math. For embedded applications, there is a speedy 8-bit version that uses RAM-based lookup tables (8KB per session) which is speed comparable to the 64-bit version and a slower 8-bit version that doesn't take up any additional RAM. The --enable-aesgcm configure option may be modified with the options &quot;=word32&quot;, &quot;=table&quot;, or &quot;=small&quot;, i.e. &quot;--enable-aesgcm=table&quot;.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">aesccm</span> - enabling AES-GCM will enable Counter with CBC-MAC Mode with 8‑byte authentication (CCM-8) for AES.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">aesni</span> - enabling AES-NI support will allow AES instructions to be called directly from the chip when using an AES-NI supported chip. This provides speed increases for AES functions.  See Chapter 4 for more details regarding AES-NI.<br/></p>
<p class="paragraph_style_2">poly1305 - enabling this option will add Poly1305 support to wolfCrypt and wolfSSL.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">camellia</span> - enabling this option will add Camellia-CBC support to wolfCrypt and wolfSSL.<br/></p>
<p class="paragraph_style_2">chacha - enabling this option will add ChaCha support to wolfCrypt and wolfSSL.<br/></p>
<p class="paragraph_style_2">md2 - enabling this option adds support for the MD2 algorithm to wolfSSL. MD2 is disabled by default due to known security vulnerabilities.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">ripemd</span> - enabling this option adds support for the RIPEMD-160 algorithm to wolfSSL.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">sha512</span> - enabling this option adds support for the SHA-512 hash algorithm. This algorithm needs the word64 type to be available, which is why it is disabled by default.  Some embedded system may not have this type available.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">sessioncerts</span> - enabling this option adds support for the peer’s certificate chain in the session cache through the wolfSSL_get_peer_chain(), wolfSSL_get_chain_count(), wolfSSL_get_chain_length(), wolfSSL_get_chain_cert(), wolfSSL_get_chain_cert_pem(), and wolfSSL_get_sessionID() functions.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">keygen</span> - enabling support for RSA key generation allows generating keys of varying lengths up to 4096 bits. wolfSSL provides both DER and PEM formatting.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">certgen</span> - enables support for self-signed X.509 v3 certificate generation.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">certreq</span> - enabling this option will add support for certificate request generation.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">hc128</span> - Though we really like the speed of the HC-128 streaming cipher, it takes up some room in the cipher union for users who aren’t using it. To keep the default build small in as many aspects as we can, we’ve disabled this cipher by default.  In order to use this cipher or the corresponding cipher suite just turn it on, no other action is required.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">rabbit</span> - enabling this option adds support for the RABBIT stream cipher.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">psk</span> - Pre Shared Key support is off by default since it’s not commonly used. To enable this feature simply turn it on, no other action is required.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">poly1305</span> - enabling this option adds support for Poly1305 to wolfcrypt and wolfSSL.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">webserver</span> - this turns on functions required over the standard build that will allow full functionality for building with the yaSSL Embedded Web Server.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">noFilesystem</span> - this makes it easier to disable filesystem use.  This option defines NO_FILESYSTEM.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">inline</span> - disabling this option disables function inlining in wolfSSL.  Function placeholders that are not linked against but, rather, the code block is inserted into the function call when function inlining is enabled.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">ecc</span> - enabling this option will build ECC support and cipher suites into wolfSSL.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">ocsp</span> - enabling this option adds OCSP (Online Certificate Status Protocol) support to wolfSSL. It is used to obtain the revocation status of x.509 certificates as described in RFC 6960.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">crl</span> - enabling this option adds CRL (Certificate Revocation List) support to wolfSSL.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">crl-monitor</span> - enabling this option adds the ability to have wolfSSL actively monitor a specific CRL (Certificate Revocation List) directory.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">ntru</span> - this turns on the ability for wolfSSL to use NTRU cipher suites. NTRU is now available under the GPLv2 from Security Innovation.  The NTRU bundle may be downloaded from the Security Innovation GitHub repository available at <a title="https://github.com/NTRUOpenSourceProject/ntru-crypto" href="../../https@github.com/NTRUOpenSourceProject/ntru-crypto">https://github.com/NTRUOpenSourceProject/ntru-crypto</a>.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">sni</span> - enabling this option will turn on the TLS Server Name Indication (SNI) extension.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">maxfragment</span> - enabling this option will turn on the TLS Maximum Fragment Length extension.<br/></p>
<p class="paragraph_style_6"><br/></p>
<p class="paragraph_style_2"><span class="style_1">truncatedhmac</span> - enabling this option will turn on the TLS Truncated HMAC extension.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">supportedcurves</span> - enabling this option will turn on the TLS Supported ECC Curves extension.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">tlsx</span> - enabling this option will turn on all TLS extensions currently supported by wolfSSL.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">valgrind</span> - enabling this option will turn on valgrind when running the wolfSSL unit tests. This can be useful for catching problems early on in the development cycle.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">testcert</span> - when this option is enabled, it exposes part of the ASN certificate API that is usually not exposed.  This can be useful for testing purposes, as seen in the wolfCrypt test application (wolfcrypt/test/test.c).<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">examples</span> - this option is enabled by default. When enabled, the wolfSSL example applications will be built (client, server, echoclient, echoserver).<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">gcc-hardening</span> - enabling this option will add extra compiler security checks.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">jobserver</span> - enabling this option allows “make” on computers with multiple processors to build several files in parallel, which can significantly reduce build times.  Users have the ability to pass different arguments to this command (yes/no/#).  If “yes” is used, the configure script will tell make to use one more than the CPU count for the number of jobs. “no” obviously disables this feature.  Optionally, the user can pass in the number of jobs as well.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">disable shared</span> - disabling the shared library build will exclude a wolfSSL shared library from being built. By default only a shared library is built in order to save time and space.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">disable static</span> - disabling the static library build will exclude a wolfSSL static library from being built.  This options is enabled by default.  A static library can be built by using the --enable-static build option.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">libz</span> - enabling libz will allow compression support in wolfSSL from the libz library. Think twice about including this option and using it by calling wolfSSL_set_compression() . While compressing data before sending decreases the actual size of the messages being sent and received, the amount of data saved by compression usually takes longer in time to analyze than it does to send it raw on all but the slowest of networks.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">fast-rsa</span> - enabling fast-rsa speeds up RSA operations by using IPP libraries. It has a larger memory consumption then the default RSA set by wolfSSL. If IPP libraries can not be found an error message will be displayed during configuration. The first location that autoconf will look is in the directory wolfssl_root/IPP the second is standard location for libraries on the machine such as /usr/lib/ on linux systems.<br/><br/>The libraries used for RSA operations are in the directory “wolfssl-X.X.X/IPP/” where X.X.X is the current wolfSSL version number. Building from the bundled libraries is dependent on the directory location and name of IPP so the file structure of the subdirectory IPP should not be changed.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">When allocating memory the fast-rsa operations have a memory tag of DYNAMIC_TYPE_USER_CRYPTO. This allows for viewing the memory consumption of RSA operations during run time with the fast-rsa option.  <br/><br/></p>
<p class="paragraph_style_2"><span class="style_1">leantls</span> - enabling produces a small footprint TLS client that supports TLS 1.2 client only (no client auth), ECC256, AES128 and SHA256 w/o Shamir. Meant to be used by itself at the moment and not in conjunction with other build options.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">curve25519</span> - an elliptic curve offering 128 bits of security and to be used with ECDH key  agreement (see § 2.6 Cross Compiling).<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">renegotiation-indication</span> - as described in RFC 5746, this specification prevents an SSL/TLS attack involving renegotiation splicing by tying the renegotiations to the TLS connection they are performed over.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">scep</span> - as defined by the Internet Engineering Task Force, Simple Certificate Enrollment Protocol is a PKI that leverages PKCS#7 and PKCS#10 over HTTP. CERT notes that SCEP does not strongly authenticate certificate requests.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">dsa</span> - NIST approved digital signature algorithm along with RSA and ECDSA as defined by FIPS 186-4 and are used to generate and verify digital signatures if used in conjunction with an approved hash function as defined by the Secure Hash Standard (FIPS 180-4).<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">curve25519</span> - enabling curve25519 option allows for the use of the curve25519 algorithm. The default curve25519 is set to use more memory but have a faster run time. To have the algorithm use less memory the option -”-enable-curve25519=small” can be used. Although using less memory there is a trade off in speed.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><span class="style_1">ed25519</span> - enabling ed25519 option allows for the use of the ed25519 algorithm. The default ed25519 is set to use more memory but have a faster run time. To have the algorithm use less memory the option -”-enable-ed25519=small” can be used. Like with curve25519 using this enable option less is a trade off between speed and memory.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_3">2.6 Cross Compiling<br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_13"><br/></p>
<p class="paragraph_style_2">Many users on embedded platforms cross compile wolfSSL for their environment.  The easiest way to cross compile the library is to use the ./configure system.  It will generate a Makefile which can then be used to build wolfSSL.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">When cross compiling, you’ll need to specify the host to ./configure, such as:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_5">./configure --host=arm-linux<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">You may also need to specify the compiler, linker, etc. that you want to use:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_5">./configure --host=arm-linux CC=arm-linux-gcc AR=arm-linux-ar RANLIB=arm-linux<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">There is a bug in the configure system which you might see when cross compiling and detecting user overriding malloc.  If you get an undefined reference  to ‘rpl_malloc’ and/or ‘rpl_realloc’, please add the following to your ./configure line:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_5">ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">After correctly configuring wolfSSL for cross-compilation, you should be able to follow standard autoconf practices for building and installing the library:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_5">make<br/></p>
<p class="paragraph_style_5">sudo make install<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">If you have any additional tips or feedback about cross compiling wolfSSL, please let us know at <a title="mailto:info@wolfssl.com?subject=" href="../cdn-cgi/l/email-protection#ec85828a83ac9b83808a9f9f80c28f8381d39f998e86898f98d1"><span class="__cf_email__" data-cfemail="7a13141c153a0d15161c09091654191517">[email&#160;protected]</span><script data-cfhash='f9e31' type="text/javascript">/* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */</script></a>.<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2"><br/></p>
</div>
</div>
</div>
<div id="id3" style="height: 26px; left: 193px; position: absolute; top: 122px; width: 268px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_268_26" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_14"><a class="class1" title="Docs.html" href="Docs.html">Docs</a> <span class="style_2">-&gt;</span> <span class="style_3">wolfSSL Manual</span></p>
</div>
</div>
</div>
<div style="height: 1px; width: 698px;  height: 1px; left: 37px; position: absolute; top: 220px; width: 698px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 698px; ">
<script pagespeed_no_defer="" type="text/javascript">//<![CDATA[
(function(){var g=this,h=function(b,d){var a=b.split("."),c=g;a[0]in c||!c.execScript||c.execScript("var "+a[0]);for(var e;a.length&&(e=a.shift());)a.length||void 0===d?c[e]?c=c[e]:c=c[e]={}:c[e]=d};var l=function(b){var d=b.length;if(0<d){for(var a=Array(d),c=0;c<d;c++)a[c]=b[c];return a}return[]};var m=function(b){var d=window;if(d.addEventListener)d.addEventListener("load",b,!1);else if(d.attachEvent)d.attachEvent("onload",b);else{var a=d.onload;d.onload=function(){b.call(this);a&&a.call(this)}}};var n,p=function(b,d,a,c,e){this.f=b;this.h=d;this.i=a;this.c=e;this.e={height:window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,width:window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth};this.g=c;this.b={};this.a=[];this.d={}},q=function(b,d){var a,c,e=d.getAttribute("pagespeed_url_hash");if(a=e&&!(e in b.d))if(0>=d.offsetWidth&&0>=d.offsetHeight)a=!1;else{c=d.getBoundingClientRect();var f=document.body;a=c.top+("pageYOffset"in window?window.pageYOffset:(document.documentElement||f.parentNode||f).scrollTop);c=c.left+("pageXOffset"in window?window.pageXOffset:(document.documentElement||f.parentNode||f).scrollLeft);f=a.toString()+","+c;b.b.hasOwnProperty(f)?a=!1:(b.b[f]=!0,a=a<=b.e.height&&c<=b.e.width)}a&&(b.a.push(e),b.d[e]=!0)};p.prototype.checkImageForCriticality=function(b){b.getBoundingClientRect&&q(this,b)};h("pagespeed.CriticalImages.checkImageForCriticality",function(b){n.checkImageForCriticality(b)});h("pagespeed.CriticalImages.checkCriticalImages",function(){r(n)});var r=function(b){b.b={};for(var d=["IMG","INPUT"],a=[],c=0;c<d.length;++c)a=a.concat(l(document.getElementsByTagName(d[c])));if(0!=a.length&&a[0].getBoundingClientRect){for(c=0;d=a[c];++c)q(b,d);a="oh="+b.i;b.c&&(a+="&n="+b.c);if(d=0!=b.a.length)for(a+="&ci="+encodeURIComponent(b.a[0]),c=1;c<b.a.length;++c){var e=","+encodeURIComponent(b.a[c]);131072>=a.length+e.length&&(a+=e)}b.g&&(e="&rd="+encodeURIComponent(JSON.stringify(s())),131072>=a.length+e.length&&(a+=e),d=!0);t=a;if(d){c=b.f;b=b.h;var f;if(window.XMLHttpRequest)f=new XMLHttpRequest;else if(window.ActiveXObject)try{f=new ActiveXObject("Msxml2.XMLHTTP")}catch(k){try{f=new ActiveXObject("Microsoft.XMLHTTP")}catch(u){}}f&&(f.open("POST",c+(-1==c.indexOf("?")?"?":"&")+"url="+encodeURIComponent(b)),f.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),f.send(a))}}},s=function(){var b={},d=document.getElementsByTagName("IMG");if(0==d.length)return{};var a=d[0];if(!("naturalWidth"in a&&"naturalHeight"in a))return{};for(var c=0;a=d[c];++c){var e=a.getAttribute("pagespeed_url_hash");e&&(!(e in b)&&0<a.width&&0<a.height&&0<a.naturalWidth&&0<a.naturalHeight||e in b&&a.width>=b[e].k&&a.height>=b[e].j)&&(b[e]={rw:a.width,rh:a.height,ow:a.naturalWidth,oh:a.naturalHeight})}return b},t="";h("pagespeed.CriticalImages.getBeaconData",function(){return t});h("pagespeed.CriticalImages.Run",function(b,d,a,c,e,f){var k=new p(b,d,a,e,f);n=k;c&&m(function(){window.setTimeout(function(){r(k)},0)})});})();pagespeed.CriticalImages.Run('../mod_pagespeed_beacon','Docs-wolfssl-manual-2-building-wolfssl.html','nGwfGbnYF7',true,false,'_SyepLg6wJc');
//]]></script><img src="Docs-wolfssl-manual-2-building-wolfssl_files/shapeimage_1.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 698px; " pagespeed_url_hash="811172799" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/>
</div>
</div>
<div style="height: 37px; width: 545px;  height: 37px; left: 191px; position: absolute; top: 80px; width: 545px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 545px; ">
<img src="Docs-wolfssl-manual-2-building-wolfssl_files/shapeimage_2.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 545px; " pagespeed_url_hash="1105775424" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/>
</div>
</div>
<div id="id4" style="height: 25px; left: 200px; position: absolute; top: 84px; width: 43px; z-index: 1; " class="style_SkipStroke_1 shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_43_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_15"><a class="class2" title="Home.html" href="Home.html">Home</a></p>
</div>
</div>
</div>
<div id="id5" style="height: 25px; left: 365px; position: absolute; top: 84px; width: 72px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_72_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_16"><a class="class3" title="https://wolfssl.com/wolfSSL/download/downloadForm.php" href="../../https@wolfssl.com/wolfSSL/download/downloadForm.php">Download</a></p>
</div>
</div>
</div>
<div id="id6" style="height: 25px; left: 439px; position: absolute; top: 84px; width: 59px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_59_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_16"><a class="class4" title="License.html" href="License.html">License</a></p>
</div>
</div>
</div>
<div id="id7" style="height: 25px; left: 499px; position: absolute; top: 84px; width: 44px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_44_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_16"><a class="class5" title="Blog/Blog.html" href="Blog/Blog.html">Blog</a></p>
</div>
</div>
</div>
<div id="id8" style="height: 25px; left: 589px; position: absolute; top: 84px; width: 80px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_80_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_16"><a class="class6" title="Community.html" href="Community.html">Community</a></p>
</div>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 245px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-2-building-wolfssl_files/shapeimage_3.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; " pagespeed_url_hash="1400275345" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 296px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-2-building-wolfssl_files/shapeimage_4.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; " pagespeed_url_hash="1694775266" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 363px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-2-building-wolfssl_files/shapeimage_5.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; " pagespeed_url_hash="1989275187" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 438px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-2-building-wolfssl_files/shapeimage_6.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; " pagespeed_url_hash="2283775108" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 498px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-2-building-wolfssl_files/shapeimage_7.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; " pagespeed_url_hash="2578275029" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 589px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-2-building-wolfssl_files/shapeimage_8.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; " pagespeed_url_hash="2872774950" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/>
</div>
</div>
<div id="id9" style="height: 25px; left: 671px; position: absolute; top: 84px; width: 61px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_61_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_16"><a class="class7" title="Contact.html" href="Contact.html">Contact</a></p>
</div>
</div>
</div>
<div id="id10" style="height: 25px; left: 249px; position: absolute; top: 84px; width: 44px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_44_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_15"><a class="class8" title="About.html" href="About.html">About</a></p>
</div>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 670px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-2-building-wolfssl_files/shapeimage_9.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; " pagespeed_url_hash="3167274871" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/>
</div>
</div>
<div id="id11" style="height: 25px; left: 298px; position: absolute; top: 84px; width: 63px; z-index: 1; " class="style_SkipStroke_1 shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_63_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_16"><a class="class9" title="Products.html" href="Products.html">Products</a></p>
</div>
</div>
</div>
<div id="id12" style="height: 25px; left: 549px; position: absolute; top: 84px; width: 41px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_41_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_15"><a class="class10" title="Docs.html" href="Docs.html">Docs</a></p>
</div>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 545px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-2-building-wolfssl_files/shapeimage_10.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; " pagespeed_url_hash="3638536967" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/>
</div>
</div>
<div id="id13" style="height: 25px; left: 35px; position: absolute; top: 224px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_17"><a class="class11" title="Docs-wolfssl-manual-1-introduction.html" href="Docs-wolfssl-manual-1-introduction.html">Previous Chapter</a></p>
</div>
</div>
</div>
<div id="id14" style="height: 27px; left: 59px; position: absolute; top: 190px; width: 196px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_196_27" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_18"><a class="class12" title="https://www.wolfssl.com/documentation/wolfSSL-Manual.pdf" href="../documentation/wolfSSL-Manual.pdf">Download wolfSSL Manual (PDF)</a></p>
</div>
</div>
</div>
<div style="height: 22px; width: 22px;  height: 22px; left: 33px; position: absolute; top: 191px; width: 22px; z-index: 1; " class="tinyText style_SkipStroke_2">
<img src="Docs-wolfssl-manual-2-building-wolfssl_files/PDF.png" alt="" style="border: none; height: 22px; width: 22px; " pagespeed_url_hash="1530847197" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/>
</div>
<div id="id15" style="height: 25px; left: 323px; position: absolute; top: 224px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_19"><a title="Docs-wolfssl-manual-toc.html" href="Docs-wolfssl-manual-toc.html">Table of Contents</a></p>
</div>
</div>
</div>
<div id="id16" style="height: 27px; left: 634px; position: absolute; top: 224px; width: 102px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_102_27" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_20"><a class="class13" title="Docs-wolfssl-manual-3-getting-started.html" href="Docs-wolfssl-manual-3-getting-started.html">Next Chapter</a></p>
</div>
</div>
</div>
<div style="height: 16px; width: 20px;  height: 16px; left: 706px; position: absolute; top: 51px; width: 20px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 20px; ">
<img src="Docs-wolfssl-manual-2-building-wolfssl_files/shapeimage_11.png" alt="" style="height: 16px; left: 0px; position: absolute; top: 0px; width: 20px; " pagespeed_url_hash="3933036888" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/>
</div>
</div>
<div style="height: 19px; width: 19px;  height: 19px; left: 707px; position: absolute; top: 25px; width: 19px; z-index: 1; " class="tinyText style_SkipStroke_2">
<img src="Docs-wolfssl-manual-2-building-wolfssl_files/United%20Kingdom%28Great%20Britain%29.png" alt="" style="border: none; height: 19px; width: 19px; " pagespeed_url_hash="3465269298" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/>
</div>
<div id="id17" style="height: 23px; left: 328px; position: absolute; top: 48px; width: 258px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_258_23" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_21">Questions? +1 (425) 245-8247</p>
</div>
</div>
</div>
<div style="height: 19px; width: 19px;  height: 19px; left: 685px; position: absolute; top: 25px; width: 19px; z-index: 1; " class="tinyText style_SkipStroke_2">
<a href="../../www.wolfssl.jp/default.htm" title="http://www.wolfssl.jp"><img src="Docs-wolfssl-manual-2-building-wolfssl_files/japan.png" alt="" style="border: none; height: 19px; width: 19px; " pagespeed_url_hash="1360061313" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/></a>
</div>
<div id="id18" style="height: 28px; left: 593px; position: absolute; top: 44px; width: 119px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_119_28" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_22"><a class="class14" title="https://www.wolfssl.com/forums" href="../forums">Support <span class="style_4">Forums</span></a></p>
</div>
</div>
</div>
<div style="height: 112px; width: 183px;  height: 112px; left: -1px; position: absolute; top: 7px; width: 183px; z-index: 1; " class="tinyText style_SkipStroke_2">
<a href="Home.html" title="Home.html"><img src="Docs-wolfssl-manual-2-building-wolfssl_files/wolf-christmas.png" alt="" style="border: none; height: 112px; width: 183px; " pagespeed_url_hash="2263691794" onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/></a>
</div>
<div style="height: 13435px; line-height: 13435px; " class="spacer"> </div>
</div>
<div style="height: 100px; margin-left: 0px; position: relative; width: 770px; z-index: 15; " id="footer_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div id="id19" style="height: 27px; left: 634px; position: absolute; top: 30px; width: 102px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_102_27" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_20"><a class="class15" title="Docs-wolfssl-manual-3-getting-started.html" href="Docs-wolfssl-manual-3-getting-started.html">Next Chapter</a></p>
</div>
</div>
</div>
<div id="id20" style="height: 25px; left: 35px; position: absolute; top: 30px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_17"><a class="class16" title="Docs-wolfssl-manual-1-introduction.html" href="Docs-wolfssl-manual-1-introduction.html">Previous Chapter</a></p>
</div>
</div>
</div>
<div id="id21" style="height: 25px; left: 323px; position: absolute; top: 30px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_19"><a title="Docs-wolfssl-manual-toc.html" href="Docs-wolfssl-manual-toc.html">Table of Contents</a></p>
</div>
</div>
</div>
<div id="id22" style="height: 29px; left: 35px; position: absolute; top: 68px; width: 701px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_701_29" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_23">Copyright 2016 wolfSSL Inc.  All rights reserved.</p>
</div>
</div>
</div>
</div>
</div>
</div>
 <script type="text/javascript">/* <![CDATA[ */(function(d,s,a,i,j,r,l,m,t){try{l=d.getElementsByTagName('a');t=d.createElement('textarea');for(i=0;l.length-i;i++){try{a=l[i].href;s=a.indexOf('/cdn-cgi/l/email-protection');m=a.length;if(a&&s>-1&&m>28){j=28+s;s='';if(j<m){r='0x'+a.substr(j,2)|0;for(j+=2;j<m&&a.charAt(j)!='X';j+=2)s+='%'+('0'+('0x'+a.substr(j,2)^r).toString(16)).slice(-2);j++;s=decodeURIComponent(s)+a.substr(j,m-j)}t.innerHTML=s.replace(/</g,'&lt;').replace(/>/g,'&gt;');l[i].href='mailto:'+t.value}}catch(e){}}}catch(e){}})(document);/* ]]> */</script></body>
</html>
